﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Arthus
{
    public partial class knjizenjeNalogaForma : Form
    {
        String FINid;
        public knjizenjeNalogaForma(String idFIN)
        {
            InitializeComponent();
            this.FINid = idFIN;
            dateTimePickerDatumKnjizenja.Value = System.DateTime.Now;
            checkBoxAutoBrojDokumenta.Checked = true;
        }

        Preduzece preduzeceObjekat = null;
        VrstaNaloga vrstaNalogaObjekat = null;
        FIN finObjekat = null;
        FST fstObjekat = null;

        stavkaFINnalogaForma stavkaFINNalogaFormaObjekat = null;

        private void PromenaCheckBoxAutoBrojDokumenta()
        { //metoda koja menja vizibilnost textbox-ova automatskog broja dokumenta
            if (checkBoxAutoBrojDokumenta.Checked == true)
            {
                //ako je cekiran checkBoxAutoBrojDokumenta
                textBoxAutomatskiBrojDokumenta1.Enabled = false;
            }
            else
            {
                //ako nije cekiran
                textBoxAutomatskiBrojDokumenta1.Enabled = true;
            }
        }
        private void checkBoxAutoBrojDokumenta_CheckedChanged(object sender, EventArgs e)
        {
            PromenaCheckBoxAutoBrojDokumenta();
        }

        private void ProveraPostojanjaFIN()
        {
            if (FINid.Length <= 0)
            {
                buttonUnesi.Enabled = true;
                //buttonIzmeni.Enabled = false;
                buttonDodajStavku.Enabled = false;
                //buttonIzmeniStavku.Enabled = false;
                //buttonObrisiStavku.Enabled = false;
            }
            else
            {
                buttonUnesi.Enabled = false;
                //buttonIzmeni.Enabled = true;
                buttonDodajStavku.Enabled = true;
                //buttonIzmeniStavku.Enabled = true;
                //buttonObrisiStavku.Enabled = true;
            }
            if (dataGridViewStavkeFINaloga.RowCount <= 0)
            {
                buttonStampanje.Enabled = false;
                //buttonIzmeniStavku.Enabled = false;
                //buttonObrisiStavku.Enabled = false;
            }
            else {
                buttonStampanje.Enabled = true;
            }
        }

        private void knjizenjeNalogaForma_Load(object sender, EventArgs e)
        {
            preduzeceObjekat = new Preduzece();
            preduzeceObjekat.PopuniComboBox(comboBoxPreduzece);
            ProveraPostojanjaFIN();
            vrstaNalogaObjekat = new VrstaNaloga();
            vrstaNalogaObjekat.PopuniComboBox(comboBoxVrstaNaloga);
        }
        private void knjizenjeNalogaForma_Activated(object sender, EventArgs e)
        {
            finObjekat = new FIN();
            finObjekat.PopuniKontroleUknjizenjeNalogaForma(FINid, comboBoxPreduzece, dateTimePickerDatumKnjizenja, comboBoxVrstaNaloga, textBoxAutomatskiBrojDokumenta1,
                textBoxOpis);
            fstObjekat = new FST();
            fstObjekat.PopuniGridViewZaDatumKnjizenja(FINid, dataGridViewStavkeFINaloga);
            if (dataGridViewStavkeFINaloga.RowCount > 0)
            {
                textBoxDuguje.Text = "" + fstObjekat.vratiDugujeNaOsnovuFINID(Convert.ToInt32(FINid));
                textBoxPotrazuje.Text = "" + fstObjekat.vratiPotrazujeNaOsnovuFINID(Convert.ToInt32(FINid));
            }
            else {
                textBoxDuguje.Text = "0.00";
                textBoxPotrazuje.Text = "0.00";
            }
            decimal razlika=Convert.ToDecimal(textBoxDuguje.Text)-(Convert.ToDecimal(textBoxPotrazuje.Text));
            textBoxRazlika.Text=""+razlika;
            if (FINid.Length > 0)
            {
                finObjekat.PromeniDugujeIPotrazujePremaID(Convert.ToInt32(FINid), Convert.ToDecimal(textBoxDuguje.Text), Convert.ToDecimal(textBoxPotrazuje.Text));
            }
            ProveraPostojanjaFIN();
        }

        private void buttonUnesi_Click(object sender, EventArgs e)
        {
            finObjekat = new FIN();
            finObjekat.UbacuUFIN(comboBoxPreduzece.SelectedItem.ToString(), dateTimePickerDatumKnjizenja, comboBoxVrstaNaloga.SelectedItem.ToString().Split(' ')[0], 
                textBoxAutomatskiBrojDokumenta1, textBoxOpis, "", textBoxDuguje, textBoxPotrazuje);
            FINid = Convert.ToString(finObjekat.VratiPovecanID()-1);
            MessageBox.Show("Finansijski nalog je kreiran");
        }

        private void comboBoxVrstaNaloga_SelectedIndexChanged(object sender, EventArgs e)
        {
            vrstaNalogaObjekat = new VrstaNaloga();
            textBoxOpis.Text = vrstaNalogaObjekat.VratiNazivVrsteNalogaNaOsnovuOznakeVrsteNaloga(comboBoxVrstaNaloga.SelectedItem.ToString().Split(' ')[0]);
        }

        private void buttonDodajStavku_Click(object sender, EventArgs e)
        {
            stavkaFINNalogaFormaObjekat = new stavkaFINnalogaForma(FINid, "", textBoxOpis.Text);
            try
            {
                stavkaFINNalogaFormaObjekat.ShowDialog();
            }
            catch
            {
                MessageBox.Show("Morate izabrati neki konto!");
            }
        }

        private void buttonZatvori_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void buttonStampanje_Click(object sender, EventArgs e)
        {
            this.Cursor = Cursors.WaitCursor;
            stampanjeFINnalogaForma stampanjeFINnalogaFormaObjekat = new stampanjeFINnalogaForma(Convert.ToInt32(FINid));
            stampanjeFINnalogaFormaObjekat.ShowDialog();
            this.Cursor = Cursors.Default;
        }

        private void dataGridViewStavkeFINaloga_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            stavkaFINNalogaFormaObjekat = new stavkaFINnalogaForma(FINid, dataGridViewStavkeFINaloga.SelectedRows[0].Cells[1].Value.ToString(), "");
            stavkaFINNalogaFormaObjekat.ShowDialog();
        }

        private void textBoxAutomatskiBrojDokumenta1_KeyPress(object sender, KeyPressEventArgs e)
        {
            Razno.DozvoliSamoBrojeve(sender, e);
        }

    }
}
